﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class Tarea_FrModTarea : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
          
        if (!Page.IsPostBack)
        {
            CargarTarea(Convert.ToInt32(Request.QueryString["idTarea"]));
            Deshabilitar();
            LabelConfirmacion.Visible = false;
            ButtonSi.Visible = false;
            ButtonNo.Visible = false;

        }

        
    }
    /// <summary>
    /// se quitan las fechas del formulario que no correspondan al mes actual   
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void CalendarFechaInicio_DayRender(object sender, DayRenderEventArgs e)
    {
        if (e.Day.IsOtherMonth)
        {
            e.Cell.Text = "";

        }
        
       
    }
    /// <summary>
    /// Carga la tarea que se va a modificar en los campos correspondientes del formulario.
    /// Consultando atraves del identificador de la tarea
    /// </summary>
    /// <param name="id"></param>

    private void CargarTarea(int id)
    {
        try
        {
            GestionarTareas tarea = new GestionarTareas();
            DataTable dt = tarea.ConsultarTarea(id, "unica");
            TextBoxNombre.Text = dt.Rows[0]["nombre"].ToString();
            TextBoxDescripcion.Text = dt.Rows[0]["descripcion"].ToString();
            DropDownListArchivos.SelectedValue = dt.Rows[0]["Archivo_idArchivoFormato"].ToString();
            CalendarFechaInicio.SelectedDate = Convert.ToDateTime(dt.Rows[0]["fechaInicio"].ToString());
            CalendarFechaLimite.SelectedDate = Convert.ToDateTime(dt.Rows[0]["fechaLimite"].ToString());
        }
        catch 
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.error('No se pudo cargar la tarea', {timeout: 3 , showClose: false });", true);
            ButtonModficar.Visible = false;
            ButtonEliminar.Visible = false;
        }
    }

    /// <summary>
    /// deshabilita todos los campos del formualario.
    /// </summary>
    private void Deshabilitar()
    {
        TextBoxNombre.Enabled = false;
        TextBoxDescripcion.Enabled = false;
        DropDownListArchivos.Enabled = false;
        CalendarFechaInicio.Enabled = false;
        CalendarFechaLimite.Enabled = false;
        ButtonRegistrar.Visible = false;
        ButtonCancelar.Visible = false;
    }

    /// <summary>
    /// habilita los campos editables del formulario
    /// </summary>

    private void Habilitar()
    {
        TextBoxNombre.Enabled = true;
        TextBoxDescripcion.Enabled = true;
        DropDownListArchivos.Enabled = true;
        CalendarFechaInicio.Enabled = true;
        CalendarFechaLimite.Enabled = true;
        ButtonRegistrar.Visible = true;
        ButtonCancelar.Visible = true;
        ButtonModficar.Visible = false;
    }

    /// <summary>
    /// Al hacer clic Se llama al metodo ModificarTarea de la clase de control para guardar la modificación
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ButtonRegistrar_Click(object sender, EventArgs e)
    {
        if (CalendarFechaInicio.SelectedDate < CalendarFechaLimite.SelectedDate)
        {
            GestionarTareas tarea = new GestionarTareas();
            if (tarea.ModificarTarea(TextBoxNombre.Text, TextBoxDescripcion.Text, CalendarFechaInicio.SelectedDate.ToShortDateString(),
                CalendarFechaLimite.SelectedDate.ToShortDateString(), Convert.ToInt32(DropDownListArchivos.SelectedValue), Convert.ToInt32(Request.QueryString["idTarea"])) == true)
                ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('La tarea ha sido modificada <br /><div align=\"center\"><a href=\"FrListarTareas.aspx\"><img src=\"../images/ok2.png\"/></a></div>');", true);
            else
                ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.error('No se pudo modificar la tarea', {timeout: 3 , showClose: false });", true);
        }
        ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.error('La fecha límite no debe ser menor a la inicial', {timeout: 3 , showClose: false });", true);
    }

    /// <summary>
    /// al hacer clic habilita los campos del formulario
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ButtonModficar_Click(object sender, EventArgs e)
    {
        Habilitar();
        
    }
    /// <summary>
    /// Al cancelar se re dirige a la pagina de listar tareas
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>

    protected void ButtonCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("FrListarTareas.aspx");
    }

    /// <summary>
    /// al hacer click, se muestra un mensaje de confirmacióm para elimnar la tarea
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>

    protected void ButtonEliminar_Click(object sender, EventArgs e)
    {
        LabelConfirmacion.Visible = true;
        ButtonSi.Visible = true;
        ButtonNo.Visible = true;
    }

    /// <summary>
    /// Al hacer clic se hacen inivisbles los campos de confirmación
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    /// 
    protected void ButtonNo_Click(object sender, EventArgs e)
    {
        LabelConfirmacion.Visible = false;
        ButtonSi.Visible = false;
        ButtonNo.Visible = false;
    }

    /// <summary>
    /// Al hacer clic se llama al metodo eliminarTarea de la clase de control gestionarTareas 
    /// verifica si se puede eliminar, y se muestra un mensaje según lo devuelto por el metodo.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>

    protected void ButtonSi_Click(object sender, EventArgs e)
    {
        GestionarTareas tarea = new GestionarTareas();
        if(tarea.EliminarTarea(Convert.ToInt32(Request.QueryString["idTarea"]))== true)
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('La tarea ha sido eliminada <br /><div align=\"center\"><a href=\"FrListarTareas.aspx\"><img src=\"../images/ok2.png\"/></a></div>');", true);
         else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.error('No es posible eliminar la tarea, esta hace parte de un seguimiento', {timeout: 2 , showClose: false });", true);



    }
}
